package com.wang.tool.idem.core;

import java.io.Serializable;

/**
 * 幂等实体
 *
 * @Author wangshaopeng
 * @Date 2022/6/12
 */
public class IdemEntity implements Serializable {

    private static final long serialVersionUID = 6516062791321260257L;


    /**
     * 结果
     */
    private Object result;

    /**
     * 过期时间
     * 0代表永久
     * <0代表不存储
     * >0 代表消除时间
     */
    private long ttl;

    /**
     * 永久存储
     *
     * @param result
     * @return
     */
    public static IdemEntity build(Object result) {
        return build(result, 0);
    }

    /**
     * 有效期存储
     *
     * @param result
     * @param ttl >0短期存储,=0永久存储,<0 不存储
     * @return
     */
    public static IdemEntity build(Object result, long ttl) {
        IdemEntity entity = new IdemEntity();
        entity.setResult(result);
        entity.setTtl(ttl);
        return entity;
    }


    /**
     * 是否需要存储
     *
     * @return
     */
    public boolean judgeNeedStore() {
        return ttl >= 0;
    }



    public Object getResult() {
        return result;
    }

    public void setResult(Object result) {
        this.result = result;
    }

    public long getTtl() {
        return ttl;
    }

    public void setTtl(long ttl) {
        this.ttl = ttl;
    }


    @Override
    public String toString() {
        return "IdemEntity{" +
                ", expire=" + ttl +
                ", ttl='" + result + '\'' +
                '}';
    }
}
